/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rh.game.chat;

import com.rh.game.Character;
import com.rh.game.GameEffect;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 *
 * @author Hayden
 */
public interface Chat {
    public static final List<Chat> EMPTY_LIST = Collections.unmodifiableList(new ArrayList<Chat>());
    
    public static final Chat NULL = new NullInstance();
    
    static final class NullInstance implements Chat  {
        private NullInstance()  { super(); }
        
        @Override
        public String toString()  { return "NULL"; }
        
        public boolean isIntro()  { return false; }
        public Character getSpeaker()  { return Character.NARRATOR; }
        public String getID()  { return ""; }
        public List<GameEffect> getEffects()  { return GameEffect.EMPTY_LIST; }
        public String getMp3()  { return null; }
        public String getText()  { return ""; }
        public ChatImage getImage()  { return ChatImage.NULL; }
        public List<ChatResponse> getResponses()  { return ChatResponse.EMPTY_LIST; }
    }
    
    boolean isIntro();
    Character getSpeaker();
    String getID();
    List<GameEffect> getEffects();
    String getMp3();
    String getText();
    ChatImage getImage();
    List<ChatResponse> getResponses();
}
